Penyelesaian Persamaan Differensial Biasa dengan Metode Euler

Metode Euler

Dalam metode numerik, metode Euler adalah salah satu prosedur numerik orde pertama untuk menyelesaikan diferensial biasa, dalam artian metode Euler disebut juga metode deret Taylor orde pertama. $$ y(x_0+h)=y(x_0) +h{dy \over dx}\Bigr|_{y=y_0}^{x=x_0} + O(h^2) $$

{dy \over dx}\Bigr|_{y=y_0}^{x=x_0} = f(x_i, y_i)
x_n = x_0 + h, \space \space \space \space y_n = y(x_n)

PDB orde satu yaitu : y(x) = f(x, y), dengan kondisi awal y_0 = y(x_0)

Metode Euler : $ y_{i+1} = y_i + h f(x,y) $, dan i yaitu 1,2,3,...n

Algoritma Metode Euler

Terdapat langkah-langkah harus dikerjaan untuk menyelesaikan persamaan differensial biasa yaitu sebagai berikut:

  1. Mulai
  2. Tetapkan nilai x_0, y_0, h, x
  3. Definisikan sebuah fungsi $ f(x,y) $
  4. Hitung $ n = (x - x_0) / h $ sebagai banyaknya iterasi
  5. lakukan perulangan dari i sampai ke n, untuk menghitung x_i = x_0 + i * h, $y_{i+1} = y_i + f(x_i, y_i) $
  6. kemudian tampilkan nilai dari $ y_i $
  7. Berhenti

Perhitungan Metode Euler

Berikut merupakan proses perhitungan metode Euler untuk PDB $ {dy \over dx} = 1+x^2, \space \space \space y(1) = -4 $ $$ f(x,y) = 1 + x^2, \space \space \space x_0 = 1, \space \space \space y_0 = -4, \space \space \space h = 0.01 $$

Iterasi 1 :
y_1 = y_0 + h \times f(x_0, y_0) \\ = -4 + 0.01 \times 2 \\ = -3,98 \\ x_1 = x_0 + h \\ = 1 + 0.01 \\ = 1.01
Iterasi 2 :
y_1 = y_0 + h \times f(x_0, y_0) \\ = -3,98 + 0.01 \times 2.02 \\ = -3,9598 \\ x_1 = x_0 + h \\ = 1.01 + 0.01 \\ = 1.02
Iterasi 3 :
y_1 = y_0 + h \times f(x_0, y_0) \\ = -3,9598 + 0.01 \times 2.0404 \\ = -3,9394 \\ x_1 = x_0 + h \\ = 1.02 + 0.01 \\ = 1.03
i x_i y_i
0 1 -4
1 1,01 -3,98
2 1,02 -3,9598
3 1,03 -3,9394

Implementasi Metode Euler dengan Python

Dalam kasus ini akan diselesaikan sebuah persamaan differensial biasa dengan bahasa pemrograman Python dengan PDB sebagai berikut : $$ {dy \over dx} = 1+x^2, \space \space \space \space \space \space y(1) = -4 $$ Dari persamaan tersebut akan dicari nilai aproksimasi dari y(1.01), \space y(1.02), \space y(1.03). Berikut merupakan program dari meode Euler:

x0 = 1
y0 = -4
h = 0.01
x = 1.1

def f(x,y):
    return 1 + x**2

def metode_euler(x0, y, h, x):    
    y = y0
    i = 0
    n = (x - x0) / h

    print(str('-'*57)+'\n|\t i \t|\t xi \t|\t yi \t\t|\n'+str('-'*57)) 
    while i < n:
        print('|\t',i,'\t|\t',round(x0,4),'\t|\t',round(y,4),'\t|')
        y = y + h * f(x0, y)
        x0 = x0 + h
        i+=1

metode_euler(x0, y0, h, x)

Penjelasan program :

Seperti halnya algoritma metode Euler diatas, pertama program tersebut menginisialisasi nilai dari $x0, y0, h, $ dan $ x $, dimana x merupakan batas perkiraan.

x0 = 1
y0 = -4
h = 0.01
x = 1.1

Kemudian program tersebut mendefinisikan sebuah fungsi, seperti persamaan differensial diatas, yaitu f(x,y) = 1 + x^2

def f(x,y):
    return 1 + x**2

Kemudian program tersebut terdapat fungsi metode_euler(x0,y0,h,x), dimana dalam fungsi tersebut tedapat variabel y sebagai penampung sementara nilai dari y0, variabel i sebagai iterasi yang dimulai dari 0, dan n yang merupakan variabel yang nantinya berisi nilai untuk batas iterasi, yang didapat dari (x-x_0) / h. Selanjutnya dilakukan iterasi sebanyak n untuk menghitung nilai y, yaitu y = y sebelumnya + h x fungsi PDB. Dan x = x sebelumnya + h.

def metode_euler(x0, y0, h, x):    
    y = y0
    i = 0
    n = (x - x0) / h

    print(str('-'*57)+'\n|\t i \t|\t xi \t|\t yi \t\t|\n'+str('-'*57)) 
    while i < n:
        print('|\t',i,'\t|\t',round(x0,4),'\t|\t',round(y,4),'\t|')
        y = y + h * f(x0, y)
        x0 = x0 + h
        i+=1

Setelah program tersebut dijalankan maka dihasilkan output seperti berikut:

-------------------------------------
|    i  |    xi     |    yi         |
-------------------------------------
|    0  |    1      |    -4         |
|    1  |    1.01   |    -3.98      |
|    2  |    1.02   |    -3.9598    |
|    3  |    1.03   |    -3.9394    |
|    4  |    1.04   |    -3.9188    |
|    5  |    1.05   |    -3.898     |
|    6  |    1.06   |    -3.8769    |
|    7  |    1.07   |    -3.8557    |
|    8  |    1.08   |    -3.8343    |
|    9  |    1.09   |    -3.8126    |
|    10 |    1.1    |    -3.7907    |

Dari program yang dijalankan tersebut maka ditemukan nilai dari $y(1.01) = -3.98 $, y(1.02) = -3.9598, dan $y(1.03)= -3.9394 $.

Sekian terimakasih.